/******************************************************************************
 * 
 * File Name	: slot.c
 *
 * Version		: V1.0
 *
 * Date		    : 
 *
 * Author		: 
 *
 * Note: this file originally from project gt_ipmi
 *
 *****************************************************************************/
 
#include <stdio.h>
#include <rtthread.h>

#include "gd32f10x.h"


//PMBUS_GA0*		PA8
//PMBUS_GA1*		PA9
//PMBUS_GA2*		PA10
//PMBUS_GA3*		PA11
//PMBUS_GA4*		PC6
//PMBUS_GAP			PC7

void slot_gpio_init(void)
{
	/* enable the led clock */
	rcu_periph_clock_enable(RCU_GPIOA);
	rcu_periph_clock_enable(RCU_GPIOC);

	/* config the GPIO input mode */  
    gpio_init(GPIOA, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_8);
	gpio_init(GPIOA, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
	gpio_init(GPIOA, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
	gpio_init(GPIOA, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
	gpio_init(GPIOC, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
	gpio_init(GPIOC, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
}

uint8_t get_slot_self(void)
{
	uint16_t input = 0;
	uint8_t slot;
	
	if(SET == gpio_input_bit_get(GPIOA, GPIO_PIN_8))//GA0
		input |= (1 << 0);
	if(SET == gpio_input_bit_get(GPIOA, GPIO_PIN_9))
		input |= (1 << 1);
	if(SET == gpio_input_bit_get(GPIOA, GPIO_PIN_10))
		input |= (1 << 2);
	if(SET == gpio_input_bit_get(GPIOA, GPIO_PIN_11))
		input |= (1 << 3);
	if(SET == gpio_input_bit_get(GPIOC, GPIO_PIN_6))
		input |= (1 << 4);
//	if(SET == gpio_input_bit_get(GPIOC, GPIO_PIN_7))//GAP
//		input |= (1 << 5);
	
	slot = input&0x1F;
//	printf("get_slot_self() = %d\r\n", slot & 0x3F);
	return slot;
}
